{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# _*Pricing Basket Options*_ "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Introduction\n",
    "<br>\n",
    "Suppose a <a href=\"https://www.investopedia.com/terms/b/basketoption.asp\">basket option</a> with strike price $K$ and two underlying assets whose spot price at maturity $S_T^1$, $S_T^2$ follow given random distributions.\n",
    "The corresponding payoff function is defined as:\n",
    "<br>\n",
    "<br>\n",
    "$$\\max\\{S_T^1 + S_T^2 - K, 0\\}$$\n",
    "<br>\n",
    "In the following, a quantum algorithm based on amplitude estimation is used to estimate the expected payoff, i.e., the fair price before discounting, for the option:\n",
    "<br>\n",
    "<br>\n",
    "$$\\mathbb{E}\\left[ \\max\\{S_T^1 + S_T^2 - K, 0\\} \\right].$$\n",
    "<br>\n",
    "The approximation of the objective function and a general introduction to option pricing and risk analysis on quantum computers are given in the following papers:\n",
    "\n",
    "- <a href=\"https://arxiv.org/abs/1806.06893\">Quantum Risk Analysis. Woerner, Egger. 2018.</a>\n",
    "- <a href=\"https://arxiv.org/abs/1905.02666\">Option Pricing using Quantum Computers. Stamatopoulos et al. 2019.</a>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:39:54.949868Z",
     "start_time": "2020-07-13T20:39:51.957621Z"
    }
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "from scipy.interpolate import griddata\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "\n",
    "from qiskit import Aer, QuantumRegister, QuantumCircuit, execute, AncillaRegister, transpile\n",
    "from qiskit.aqua.algorithms import IterativeAmplitudeEstimation\n",
    "from qiskit.circuit.library import WeightedAdder, LogNormalDistribution, LinearAmplitudeFunction"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Uncertainty Model\n",
    "\n",
    "We construct a circuit factory to load a multivariate log-normal random distribution into a quantum state on $n$ qubits.\n",
    "For every dimension $j = 1,\\ldots,d$, the distribution is truncated to a given interval $[\\text{low}_j, \\text{high}_j]$ and discretized using $2^{n_j}$ grid points, where $n_j$ denotes the number of qubits used to represent dimension $j$, i.e., $n_1+\\ldots+n_d = n$.\n",
    "The unitary operator corresponding to the circuit factory implements the following: \n",
    "\n",
    "$$\\big|0\\rangle_{n} \\mapsto \\big|\\psi\\rangle_{n} = \\sum_{i_1,\\ldots,i_d} \\sqrt{p_{i_1\\ldots i_d}}\\big|i_1\\rangle_{n_1}\\ldots\\big|i_d\\rangle_{n_d},$$\n",
    "\n",
    "where $p_{i_1\\ldots i_d}$ denote the probabilities corresponding to the truncated and discretized distribution and where $i_j$ is mapped to the right interval using the affine map:\n",
    "\n",
    "$$ \\{0, \\ldots, 2^{n_j}-1\\} \\ni i_j \\mapsto \\frac{\\text{high}_j - \\text{low}_j}{2^{n_j} - 1} * i_j + \\text{low}_j \\in [\\text{low}_j, \\text{high}_j].$$\n",
    "\n",
    "For simplicity, we assume both stock prices are independent and identically distributed.\n",
    "This assumption just simplifies the parametrization below and can be easily relaxed to more complex and also correlated multivariate distributions.\n",
    "The only important assumption for the current implementation is that the discretization grid of the different dimensions has the same step size."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:39:54.963598Z",
     "start_time": "2020-07-13T20:39:54.951907Z"
    }
   },
   "outputs": [],
   "source": [
    "# number of qubits per dimension to represent the uncertainty \n",
    "num_uncertainty_qubits = 2\n",
    "\n",
    "# parameters for considered random distribution\n",
    "S = 2.0 # initial spot price\n",
    "vol = 0.4 # volatility of 40%\n",
    "r = 0.05 # annual interest rate of 4%\n",
    "T = 40 / 365 # 40 days to maturity\n",
    "\n",
    "# resulting parameters for log-normal distribution\n",
    "mu = ((r - 0.5 * vol**2) * T + np.log(S))\n",
    "sigma = vol * np.sqrt(T)\n",
    "mean = np.exp(mu + sigma**2/2)\n",
    "variance = (np.exp(sigma**2) - 1) * np.exp(2*mu + sigma**2)\n",
    "stddev = np.sqrt(variance)\n",
    "\n",
    "# lowest and highest value considered for the spot price; in between, an equidistant discretization is considered.\n",
    "low  = np.maximum(0, mean - 3*stddev)\n",
    "high = mean + 3*stddev\n",
    "\n",
    "# map to higher dimensional distribution\n",
    "# for simplicity assuming dimensions are independent and identically distributed)\n",
    "dimension = 2\n",
    "num_qubits=[num_uncertainty_qubits]*dimension\n",
    "low=low*np.ones(dimension)\n",
    "high=high*np.ones(dimension)\n",
    "mu=mu*np.ones(dimension)\n",
    "cov=sigma**2*np.eye(dimension)\n",
    "\n",
    "# construct circuit factory\n",
    "u = LogNormalDistribution(num_qubits=num_qubits, mu=mu, sigma=cov, bounds=list(zip(low, high)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:39:55.563010Z",
     "start_time": "2020-07-13T20:39:54.966704Z"
    },
    "tags": [
     "nbsphinx-thumbnail"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot PDF of uncertainty model\n",
    "x = [ v[0] for v in u.values ]\n",
    "y = [ v[1] for v in u.values ]\n",
    "z = u.probabilities\n",
    "#z = map(float, z)\n",
    "#z = list(map(float, z))\n",
    "resolution = np.array([2**n for n in num_qubits])*1j\n",
    "grid_x, grid_y = np.mgrid[min(x):max(x):resolution[0], min(y):max(y):resolution[1]]\n",
    "grid_z = griddata((x, y), z, (grid_x, grid_y))\n",
    "fig = plt.figure(figsize=(10, 8))\n",
    "ax = fig.gca(projection='3d')\n",
    "ax.plot_surface(grid_x, grid_y, grid_z, cmap=plt.cm.Spectral)\n",
    "ax.set_xlabel('Spot Price $S_T^1$ (\\$)', size=15)\n",
    "ax.set_ylabel('Spot Price $S_T^2$ (\\$)', size=15)\n",
    "ax.set_zlabel('Probability (\\%)', size=15)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Payoff Function\n",
    "\n",
    "The payoff function equals zero as long as the sum of the spot prices at maturity $(S_T^1 + S_T^2)$ is less than the strike price $K$ and then increases linearly.\n",
    "The implementation first uses a weighted sum operator to compute the sum of the spot prices into an ancilla register, and then uses a comparator, that flips an ancilla qubit from $\\big|0\\rangle$ to $\\big|1\\rangle$ if $(S_T^1 + S_T^2) \\geq K$.\n",
    "This ancilla is used to control the linear part of the payoff function.\n",
    "\n",
    "The linear part itself is approximated as follows.\n",
    "We exploit the fact that $\\sin^2(y + \\pi/4) \\approx y + 1/2$ for small $|y|$.\n",
    "Thus, for a given approximation rescaling factor $c_\\text{approx} \\in [0, 1]$ and $x \\in [0, 1]$ we consider\n",
    "$$ \\sin^2( \\pi/2 * c_\\text{approx} * ( x - 1/2 ) + \\pi/4) \\approx \\pi/2 * c_\\text{approx} * ( x - 1/2 ) + 1/2 $$ for small $c_\\text{approx}$.\n",
    "\n",
    "We can easily construct an operator that acts as \n",
    "$$\\big|x\\rangle \\big|0\\rangle \\mapsto \\big|x\\rangle \\left( \\cos(a*x+b) \\big|0\\rangle + \\sin(a*x+b) \\big|1\\rangle \\right),$$\n",
    "using controlled Y-rotations.\n",
    "\n",
    "Eventually, we are interested in the probability of measuring $\\big|1\\rangle$ in the last qubit, which corresponds to\n",
    "$\\sin^2(a*x+b)$.\n",
    "Together with the approximation above, this allows to approximate the values of interest.\n",
    "The smaller we choose $c_\\text{approx}$, the better the approximation.\n",
    "However, since we are then estimating a property scaled by $c_\\text{approx}$, the number of evaluation qubits $m$ needs to be adjusted accordingly.\n",
    "\n",
    "For more details on the approximation, we refer to:\n",
    "<a href=\"https://arxiv.org/abs/1806.06893\">Quantum Risk Analysis. Woerner, Egger. 2018.</a>\n",
    "\n",
    "Since the weighted sum operator (in its current implementation) can only sum up integers, we need to map from the original ranges to the representable range to estimate the result, and reverse this mapping before interpreting the result. The mapping essentially corresponds to the affine mapping described in the context of the uncertainty model above."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:39:55.570350Z",
     "start_time": "2020-07-13T20:39:55.565874Z"
    }
   },
   "outputs": [],
   "source": [
    "# determine number of qubits required to represent total loss\n",
    "weights = []\n",
    "for n in num_qubits:\n",
    "    for i in range(n):\n",
    "        weights += [2**i]\n",
    "\n",
    "# create aggregation circuit\n",
    "agg = WeightedAdder(sum(num_qubits), weights)\n",
    "n_s = agg.num_sum_qubits\n",
    "n_aux = agg.num_qubits - n_s - agg.num_state_qubits  # number of additional qubits"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:39:55.579531Z",
     "start_time": "2020-07-13T20:39:55.572709Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         ┌───────┐┌────────┐      \n",
      "state_0: ┤0      ├┤0       ├──────\n",
      "         │       ││        │      \n",
      "state_1: ┤1      ├┤1       ├──────\n",
      "         │  P(X) ││        │      \n",
      "state_2: ┤2      ├┤2       ├──────\n",
      "         │       ││        │      \n",
      "state_3: ┤3      ├┤3       ├──────\n",
      "         └───────┘│        │┌────┐\n",
      "  obj_0: ─────────┤        ├┤3   ├\n",
      "                  │        ││    │\n",
      "  sum_0: ─────────┤4 adder ├┤0   ├\n",
      "                  │        ││    │\n",
      "  sum_1: ─────────┤5       ├┤1   ├\n",
      "                  │        ││    │\n",
      "  sum_2: ─────────┤6       ├┤2 F ├\n",
      "                  │        ││    │\n",
      " work_0: ─────────┤7       ├┤4   ├\n",
      "                  │        ││    │\n",
      " work_1: ─────────┤8       ├┤5   ├\n",
      "                  │        ││    │\n",
      " work_2: ─────────┤9       ├┤6   ├\n",
      "                  └────────┘└────┘\n",
      "objective qubit index 4\n"
     ]
    }
   ],
   "source": [
    "# set the strike price (should be within the low and the high value of the uncertainty)\n",
    "strike_price = 3.5\n",
    "\n",
    "# map strike price from [low, high] to {0, ..., 2^n-1}\n",
    "max_value = 2**n_s - 1\n",
    "low_ = low[0]\n",
    "high_ = high[0]\n",
    "mapped_strike_price = (strike_price - dimension*low_) / (high_ - low_) * (2**num_uncertainty_qubits - 1)\n",
    "\n",
    "# set the approximation scaling for the payoff function\n",
    "c_approx = 0.25\n",
    "\n",
    "# setup piecewise linear objective fcuntion\n",
    "breakpoints = [0, mapped_strike_price]\n",
    "slopes = [0, 1]\n",
    "offsets = [0, 0]\n",
    "f_min = 0\n",
    "f_max = 2*(2**num_uncertainty_qubits - 1) - mapped_strike_price\n",
    "basket_objective = LinearAmplitudeFunction(\n",
    "    n_s,\n",
    "    slopes,\n",
    "    offsets,\n",
    "    domain=(0, max_value),\n",
    "    image=(f_min, f_max),\n",
    "    rescaling_factor=c_approx,\n",
    "    breakpoints=breakpoints\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# define overall multivariate problem\n",
    "qr_state = QuantumRegister(u.num_qubits, 'state')  # to load the probability distribution\n",
    "qr_obj = QuantumRegister(1, 'obj')  # to encode the function values\n",
    "ar_sum = AncillaRegister(n_s, 'sum')  # number of qubits used to encode the sum\n",
    "ar = AncillaRegister(max(n_aux, basket_objective.num_ancillas), 'work')  # additional qubits\n",
    "\n",
    "objective_index = u.num_qubits\n",
    "\n",
    "basket_option = QuantumCircuit(qr_state, qr_obj, ar_sum, ar)\n",
    "basket_option.append(u, qr_state)\n",
    "basket_option.append(agg, qr_state[:] + ar_sum[:] + ar[:n_aux])\n",
    "basket_option.append(basket_objective, ar_sum[:] + qr_obj[:] + ar[:basket_objective.num_ancillas])\n",
    "\n",
    "print(basket_option.draw())\n",
    "print('objective qubit index', objective_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:39:55.869583Z",
     "start_time": "2020-07-13T20:39:55.581673Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY8AAAEzCAYAAADJko/pAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd5hU5fnG8e8jiDRFFMWCuvYuiWAvdAsWLCixYUeNJWIs+alRNJYEBY2xNyyoGBQboiCwoMYKRo0KGlRERESqLk3K8/vjPRvHcXZ3ZtmZM2f2/lzXXLPznjL3DMM8c95zznvM3REREcnFanEHEBGR5FHxEBGRnKl4iIhIzlQ8REQkZyoeIiKSMxUPERHJmYqHFDUz62dmnnKbYWZPm9mWMeVpZmZDzGxOlOeUqP1MM/vSzJab2bgqlu2Y9loqb8sL+RqiLNtE7+3aae2nRJmaFzqTJEvDuAOIZGEBcFD09xbAX4AxZrajuy8scJZzgMOA3sA3wOdmtgFwF3A7MBSYV8M6TgC+SHkcx8lW2wBXAw8B81PaXwT2AhbFkEkSRMVDkmC5u78V/f2WmU0DXgO6E76sC2k74FN3f7qywcz2BRoAD7r7h1ms40N3/yhfAVeFu38PfB93Dil+6raSJJoY3ZdF3Ui3m9mnZrYo6jq6w8zWqpzZzP6ZqSsp6rb5zsxWjx63MrOHoy6pRWY2zszap8w/FTgd+G1Kl1M/QiED+CC1KytX0fM9ldZW2dW1U/S4LHp8rJndY2YLzGy6mV1jZqulLbuLmb1gZvPNrMLM3jGzbmbWEXghmu3LaH1To2V+1W1V0/tS+d6Y2c1m1jfKMy/q3vtFt5iUDhUPSaKy6H4m0JTwq/8K4GDgz0BnfrlF8gCwv5ltXtlgZgacDAx292VR87PAgcDFQC/C/49yM9sqmn4kMAKYTOja2Qu4Hzg3mn5C1PZiDfkbmFnDlFtt/h/2ByqAnsBg4Kro78rXtx3wL2BD4Owo+zPAJsB70WsEOCrKfGQ1z1XT+1LpWKAL0Ae4DDgUuKEWr02SwN11061ob0A/YDahi7Uhoa++HPgB2DDD/A2BfQj7ETaN2lYDpgHXpMzXOZpnp+jxQdHjDinzNCN04dyT0vYQMCHtOTumrqua11I5X/rtumj6OOCp6tZNKJwOPJI23/vAkJTHTwDTgSZVZDk0Wk9ZWvspUXvzHN+XqcDnQMOUtluBmXF/hnTLz037PCQJ1gWWpTyeBvRy928BzOwk4CJga8IXW6VtgGnuvtLMBgG9zayfh2+2UwhFoHLfw+7ALHcfX7mwuy80s+HAvnX8en5H+KKtNKMW6xiV9vgTYNOUx50JW1WLa7HuVLm8L+Xunnrk2CfA+ma2uv+8dSclQsVDkmAB0JXwC3gmMCMqAJjZkcAjhKOdLgfmErpqngEap6xjEKFLq5OZvQsczc9dN0TLzMrw3N8B69TliwE+9lXfYT4/7fFP/PL1rgt8u4rPAbm9L5kyGbAGvyz+UgJUPCQJlrv7hCqmHQO87e6/r2wwsw7pM7n7VDMbTdji2JzQlfVEyizfAutnWH9rQkEqhCVAo7S2lrVc1xzCF/+qKob3RYqQdphL0jUBlqa1nVDFvA8Qtjh+Dzzr7qm/lN8mdLHsX9lgZk2BQ4DX6y5utaYTDgVOdUAt1zUGONbMGlcx/afovqrplYrhfZEipOIhSfcK4UiqK8ysq5kNJBzxk8mzhF/3uxK6sf7H3UcCbwBPmtnJZnYo4ciqJsBNeUv/S88AW5vZLdFruZ6fT47M1TVAC+BVM+sVre8SMzstmv5pdH+Wme1hZjtnWkmRvC9ShFQ8JOnuAQYAfwCGAZsBx2ea0d2XAi8BXwOjM8xyBKEY3Uo41NeAzu4+pe5jZ8z3ImG/TU9CIdmM8Lpqs65PCTu0ZxMOJ34mWu9X0fSvCPt8jiIc0vtC5jUBMb8vUpws2u8oUvLMrCHhy/NBd/9z3HlEkkw7zKXkmVkjoC1hi2RdwtaKiKwCFQ+pDzYC3iEccnqWu0+POY9I4qnbSkREcqYd5iIikrN60W3VqlUrLysry8u6Fy5cSLNmzWqesUglOb+yxyfJ+ZOcHQqbf+LEibPdfb1M0+pF8SgrK2PChKpOUF4148aNo2PHjnlZdyEkOb+yxyfJ+ZOcHQqb38y+qmqauq1ERCRnKh4iIpIzFQ8REcmZioeIiORMxUNERHKm4iEiIjlT8RARkZypeIiIlKIlS+C00+DTT2uetxZUPERESs3ixdCjBwwaBG+/nZenqBdnmIuI1BsLF8Lhh0N5OTz4IPTunZenUfEQESkVFRVwyCHw+uvw8MNw0kl5eyoVDxGRUvDDD9C9O7z1FgweDMcdl9enU/EQEUm6BQvgoINgwgR44gk45pi8P6WKh4hIks2bBwccAB98AEOHwhFHFORpVTxERJJqzhzo2hU++QSGDYNDDy3YUxf0UF0zO8bMnjezb8yswswmmlmNHXNmtoaZDTCzWWa20MxeNLOy/CcWESlS338PnTrBpEnw7LMFLRxQ+PM8LgIqgL7A4UA58LiZnV/DcrcBpwAXAz2BVsArZtY4f1FFRIrUd9+FwjFlCgwfDgcfXPAIhe62OszdZ6c8HmtmGxGKyj8yLWBmbYDTgdPc/ZGo7UPgS+BE4P78RhYRKR6NZs+Gjh1h2jQYMSL8HYOCbnmkFY5K/wY2qmaxA6L7YSnr+QZ4HSh8uRURicv06fymb1+YPh1efjm2wgHFMTzJXsBn1UzfDpju7hVp7ZOiaSIipe+rr6BDBxrNnQsjR8J++8Uax9w9vic36wK8QuiSeqiKee4DdnP336S1Xxctl3Grxcz6AH0AWrdu3W7IkCF1Gf1/KioqaN68eV7WXQhJzq/s8Uly/iRmb/ztt/ymb18aVlTw1rXXsnzXXQvyvJ06dZro7u0zTnT3WG5AGfAd8EwN890HvJ+h/TpgRjbP1a5dO8+X8vLyvK27EJKcX9njk+T8icv+3/+6b7KJe8uW7hMmFDQ/MMGr+F6NpdvKzNYBXgK+Ak6oYfZ5QIsM7S2jaSIipemzz6BDB1i0KAx02K5d3In+p+DFw8yaAsOBRsCh7r6ohkUmA5uYWbO09u2iaSIipWfSpFA4li0LhaNt27gT/UKhTxJsCAwFtgYOcvdZWSw2Kro/MmU9GwH7EbZeRERKy0cf/Xwk1bhxsPPOcabJqNDnedwJdAf+AKxrZuumTPu3uy81szEA7t4lup9uZg8At5qZAd8D/QhdXoMLGV5EJO8++CAMOdKoEYwdC9tuG3eijApdPCrP2fh7hmmbA1OBBhmmXQAsBAYCTYHxwHHuviQPGUVE4vHee9CtGzRrFgrHVlvFnahKBS0e7l6WxTwdM7QtJZyFflHdpxIRKQLvvhtGx23RIuzj2HzzuBNVqxhOEhQRqd/efDN0Va2zDowfX/SFA1Q8RETi9dprYYujdetQODbbLO5EWVHxEBGJy7hx4QqAbdqEv9u0iTtR1lQ8RETiMHp0uOZ4WVkoHBtVNz5s8VHxEBEptJdfDhdv2mqrUDhat447Uc5UPERECmn4cOjRA7bfPhyOu956cSeqFRUPEZFCefZZOOqocMb4mDHQqlXciWpNxUNEpBCeegqOOQZ23TXs71hnnbgTrRIVDxGRfHvySfjd72D33WHUKFh77bgTrTIVDxGRfBo8GI4/HvbZJ1wBcK214k5UJ1Q8RETy5aGHoHfvMELuiBGQsCsYVkfFQ0QkH+67D047LQw78sILYbDDEqLiISJS1+68E/r0CWePP/88NG0ad6I6p+IhIlKXbrsNzj0XDjsMnnkGGjeOO1FeqHiIiNSVAQPgD3+AI48Mh+ausUbcifJGxUNEpC789a9w8cXhXI4nnwxXAixhKh4iIqvqL3+B//s/OO44ePxxWH31uBPlnYqHiEhtucNVV4XbSSfBo49Cw0Jf3TseKh4iIrXhDpdfHrY6TjsNBg2CBg3iTlUw9aNEiojUJXe45JKwg/yss8KhuavVr9/iKh4iIrlwh7594e9/D4fk/uMfYBZ3qoKrX6VSRGRVrFwJ550XCseFF9bbwgEqHiIi2Vm5Es45J3RRXXopDBxYbwsHqNtKRKRmK1bAGWeEgQ4vvxyuu65eFw5Q8RARqd7y5XDqqWFo9X79wmG59bxwgIqHiEjVli8P528MGRK2Nq64Iu5ERUPFQ0Qkk2XLwhnjTz8N/fuHQ3Plf1Q8RETSLV0KvXrBc8+FHeN9+8adqOioeIiIpFqyBHr2hBdfDIfinnde3ImKkoqHiEilxYvDcOojR8Ldd4ezxyUjFQ8REYBFi6BHDxgzBh54IIxXJVVS8RARqagIV/579dVwLkfv3nEnKnoqHiJSv/34I3TvDm+8EYZUP/74uBMlQsGHJzGzrczsHjP70MxWmNm4LJYpMzPPcBtSgMgiUqoWLIADDoA33wzncqhwZC2OLY8dge7AW0Cul9u6GPhXyuPZdRVKROqZefPgwAPh/fdh6NCwo1yyFkfxeMHdnwMws6eAVjks+6m7v5WfWCJSb8yZA926wccfh5MADzss7kSJU/Di4e4rC/2cIiKVVp8/Hzp3hk8/hWefhYMPjjtSIiVtSPZB0X6Sb81soJk1iTuQiCTId9/xm7594bPP4PnnVThWgbl7fE8edVu5e8ca5tsQuAIYBfwAdAQuA0a5e48qlukD9AFo3bp1uyFD8rNvvaKigubNm+dl3YWQ5PzKHp8k5m80Zw5tL7qINb77jo9uuIH5u+4ad6RaKeR736lTp4nu3j7jRHeP7QY8BYyr5bLnAA60rWnedu3aeb6Ul5fnbd2FkOT8yh6fxOX/+mv3rbd2b9bM37v11rjTrJJCvvfABK/iezVp3Vapnoru28WaQkSK27Rp0LEjzJwJI0eyoG3buBOVhCQXD0+7FxH5palToUMHmD0bRo2CffaJO1HJSPIZ5j2j+4mxphCR4vT559CpUxh6ZPRoaJ+5615qp+DFw8yaEk4SBNgYWMvMKgvBCHdfZGZTgPHufnq0TD9gTcIJgj8A+wOXAMPc/cNC5heRBPjss3A47pIlYaDD3/427kQlJ44tj/WBoWltlY83B6YScjVImT6ZcHb5GUATYBpwE3B9PoOKSAJNnhwKx7JlMHYs7LJL3IlKUhwnCU4Fqr16vLuXpT0eAmgcKxGp3scfh8JhBuPGwY47xp2oZCV5h7mIyM8+/DAcVdWggQpHAah4iEjyvfde2Dm+xhowfjxst13ciUqeioeIJNu770KXLtC8ebiY09Zbx52oXlDxEJHkeust6NoVWrYMWxxbbBF3onpDxUNEkun118OFnNZbLxSOsrK4E9UrKh4ikjzjx8NBB8GGG4a/N9kk7kT1joqHiCTLmDFhKPVNNw2FY+ON405UL6l4iEhyjBwJhx4KW24ZDsfdYIO4E9VbKh4ikgwjRsDhh8O220J5Oay/ftyJ6jUVDxEpfs8/D0ccATvtFIYcadUq7kT1noqHiBS3YcPg6KPD4IZjxsA668SdSFDxEJFi9uSTcOyxsNtu4Xoca68ddyKJqHiISHF6/HE4/njYe++wo7xFi7gTSYoai4eZjTWz7aK/e5vZuvmPJSL12sMPw4knwv77w0svwZprxp1I0mSz5bEfULmtOAjYMn9xRKTee+ABOPXUMF7Viy9Cs2ZxJ5IMsrmex9fAMWZWQbgOx+bR3xm5+yd1FU5E6pm774Zzzglnjw8bBk2axJ1IqpBN8bgRuBO4EHDg8Srms2h6gyqmi4hU7fbb4fzzw0mAQ4dC48ZxJ5Jq1Fg83P0+M3se2Bp4FTgX0NaFiNSdW26Biy4K53I8+SQ0ahR3IqlBjcXDzHoDL7r762Z2DfCcu8/IfzQRqRf694fLLoOePcMRVquvHnciyUI2O8xTd5JfBbTJXxwRqVeuvz4Ujt/9Dp54QoUjQbIpHvOAjaK/K/driIjUnjv06wdXXhkOyX30UWiYzS5YKRbZ/GuNBh41s0+jxw+Z2cKqZnb33eskmYiUJvdQNG64IRySe9990EDH2SRNNsXjNOAcYDtgV+BL4Pt8hhKREuUeuqluugn69IG77oLVNNBFEmVztNUiYACAmXUFrnD3D/IdTERKjHs4ourWW+Hcc+G221Q4EiynTkZ33zxfQUSkhLnDBReEczkuvBAGDgSzuFPJKsi57JvZFmZ2l5n9x8y+ie7vNLMt8hFQRBJu5Uo4++xQOC65RIWjROS05WFm7YByYAkwHPgOaA0cDZxgZp3c/b06TykiybRiRdi38eCDcPnlcN11KhwlItdj424G/g0cHO0LAcDMmgIjoumd6y6eiCTWihXhaKpHH4Wrrw43FY6SkWvx2B04NrVwQNipbmY3A0/WWTIRSa7ly+Gkk2DIkLC1ccUVcSeSOpZr8VgMVHU9j3UI3VkiUp8tWxYu4vTUU/C3v8Gll8adSPIg1x3mLwJ/NbN9UxujxzcCL9RVMBFJoJ9+gl69QuEYOFCFo4TluuVxEfAcMN7MZgGzgPWj25vAH+s2nogkxtKlYXDD4cPDORznnx93IsmjXM/zmAPsa2YHAbsBGwLfAm+7+6g85BORJFi8GI46Cl5+Ge68M1zQSUparofqNnD3Fe7+MvBynjKJSJIsWgQ9esCYMWGcqjPOiDuRFECu+zy+MbP+ZrZ9bZ/QzLYys3vM7EMzW2Fm47JcroWZDTKzeWa2wMweM7Oqdt6LSCEsXBiu/DdmDAwapMJRj+RaPO4GegIfmdnbZtbHzNbKcR07At2BT4HPcljun0BH4AzgFEK32bM5PreI1JUff4SDD4bx42HwYDj55LgTSQHlVDzcvZ+7bwF0I3z5DwS+jbYCuma5mhfcfRN3Pwb4OJsFzGwv4ADgZHd/2t2fAU4k7H/J9nlFpI40qKiAAw+EN94IF3E6/vi4I0mB1WpIS3cf6+69gQ2A84FtgZFmNtXM+pnZRtUsu7IWT3kw8J27v5qynncIw8MfXIv1iUhtzZ9P20sugXffDdcbP/bYuBNJDFZ1POT2wP6Ea33MA14jdCtNMbMTV3HdqbYDJmdonxRNE5FCmDsXunSh+ZQp8PTTcPTRcSeSmJh7bleVNbPNCPscegNlhCsNPgA86+4/mVkDwhhXv3P3DWtY11NAK3fvWMN8rwAL3f2ItPbBwBbuvneGZfoAfQBat27dbsiQIVm9vlxVVFTQvHnzvKy7EJKcX9kLa/UFC2j7xz/SdNo0Jlx+OYs6dow7Uq0k8b1PVcj8nTp1muju7TNNy/VQ3XJgP+AbYBAwyN2/Sp3H3VeY2ePAH2qZt064+73AvQDt27f3jnn6oI8bN458rbsQkpxf2Qto1izo2hW++QaGD2dRo0bJyp8ice99mmLJn2u31SzCkVJl0c7zr6qY732gLi8cNQ9okaG9ZTRNRPJl5kzo1AmmTAlnjx9wQNyJpAjkeoZ5ryznWwZUVVhqYzJhiyfdduhwXZH8mTEDOneG6dPhpZegQ4e4E0mRyHVsKwDMrA2wDdA4fZq7j1jVUBm8BPzZzPZ199ejDO2BLaJpIlLXvv46FI6ZM8OwI/vuW/MyUm/kus9jTcLJepXbrZVXdknd696ghnU0JXR9AWwMrGVmPaPHI6Jrg0wBxrv76QDu/qaZjQIeMbOLgZXA34DX3X10Lq9BRLIwdWooHHPmwKhRsNdecSeSIpPrlseNwKaELqTXgSMJ+xxOJFxB8Lgs1rE+MDStrfLx5sDUKFd6EeoF3AI8SNhXMxy4IMf8IlKTL74I+zh++AFGj4bddos7kRShXItHd+BK4O3o8Qx3fxd41cwGAJcA1Z4x5O5T+XmLpap5yjK0zQdOjW4ikg///W/Y4li0KIxXteuucSeSIpXr0Vatga/dfQWwkHD1wEoj+Lk7S0SSZvLksEN8yRIYO1aFQ6qVa/H4GmgV/f1f4NCUaXugy9CKJNPHH0PHjrBiBZSXQ9u2cSeSIpdrt9UrQFfgGcL+h4fNrB2wlDBMyYC6jSciefef/0CXLtCwYdji2E4j/kjNsioeZtaEsL9jFvCFmbV290fNrIIwRHsT4DzgnrwlFZG69/774czxxo1D4dhmm7gTSULUWDzMbAvC+FVlKc0/mNmx0dDoz+Qpm4jk08SJ0K0brLlmKBxbbhl3IkmQbPZ59CecV7Ef0JRwMad/o60MkeR6++3QVdWiRbiYkwqH5Cib4rEXcKW7/8vdl7j7JOAsYFMzq3bUXBEpQm+8EbY4WrUKhaOsLO5EkkDZFI8NgS/S2j4nnKuxQZ0nEpH8ee21cAXADTYIhWPTTeNOJAmV7aG6uV30Q0SKT3k5HHQQtGkTCsfGG8edSBIs20N1R5rZ8gztY9Lb3X39VY8lInXqlVfg8MPDvo0xY6B167gTScJlUzyuyXsKEcmfl16CI4+EbbcNY1Wtt17ciaQE1Fg83F3FQySpXngBevaEHXcMWx/rrht3IikRuQ5PIiJJ8cwzcPTRsMsuoatKhUPqkIqHSCkaOhSOOQbatQtdVS1bxp1ISoyKh0ipeeIJOO442HNPGDkynAgoUsdUPERKyaOPwoknwj77hEvHrrVW3ImkRKl4iJSKBx+Ek08OQ6uPGAHNm8edSEqYiodIKbj3Xjj99DDsyPDh0KxZ3ImkxKl4iCTdHXfAWWfBIYfAc89BkyZxJ5J6QMVDJMluvRXOOw969ICnnw7X5RApABUPkaS6+Wbo2zecyzF0KKyxRtyJpB5R8RBJohtugEsugV69wqG5q68edyKpZ1Q8RJLEHa65Bq64Ak44AQYPVuGQWGQ7qq6IxM0d/vxnuP56OOUUuP9+aNAg7lRST6l4iCSBO/zpT9C/P5x5Jtx9N6ymjgOJj4qHSLFzh4suCkdWnXMO3H67CofETp9AkWLmDhdcEArHBReEczpUOKQI6FMoUqxWrvx5S6Nyy8Ms7lQigIqHSHFauRL69IF77gn7Om6+WYVDioqKh0ixWbECTj0VHnggHF11ww0qHFJ0tMNcpJgsXw69e4cT/669NhQPkSKk4iFSLJYtCyf+DR0KN94YuqtEipSKh0gx+OmncPW/YcPC/o0//jHuRCLVKvg+DzPbwczGmNkiM5thZteaWbWnyZpZmZl5htuQQuUWyZulS6Fnz1A4br1VhUMSoaBbHmbWEhgNfAL0ALYEBhCK2JVZrOJi4F8pj2fXdUaRglqyJIyKO2JEOIfj97+PO5FIVgrdbXU20AQ4yt1/AF4xs7WAfmbWP2qrzqfu/lbeU4oUwqJFcMQRMHp0uBLgmWfGnUgka4XutjoYGJlWJIYQCkqHAmcRic1qixfDoYeGwvHggyockjiFLh7bAZNTG9x9GrAomlaTQWa2wsy+NbOBZqbrbUry/Pgju/zpTzB+PDzySBghVyRhzN0L92Rmy4BL3P3WtPbpwCPufnkVy20IXAGMAn4AOgKXAaPcvUcVy/QB+gC0bt263ZAh+dm3XlFRQfPmzfOy7kJIcv4kZm+wcCG7XHYZa06axOQrrmBW585xR6qVJL73lZKcHQqbv1OnThPdvX3Gie5esBuwDLgwQ/t04IYc13UO4EDbmuZt166d50t5eXne1l0ISc6fuOzz5rnvsYd7w4b+Ub9+cadZJYl771MkObt7YfMDE7yK79VCd1vNA1pkaG8ZTcvFU9F9u1VKJFIIc+dCt27w3nswdCjfd9AuPkm2QhePyaTt2zCzTYCmpO0LyYKn3YsUp9mzoUsX+PDDcC7HEUfEnUhklRW6eLwEHGhma6a09QIWA+NzXFfP6H5iXQQTyYtZs6BzZ5g0CZ57LhxhJVICCn2ex93ABcAwM/sbsAXQDxjoKYfvmtkUYLy7nx497gesSThB8Adgf+ASYJi7f1jIFyCStZkzwxbHl1/C8OHQtWvciUTqTEGLh7vPM7MuwO3AC8B84BZCAUnPlTpkyWTC2eVnEM4JmQbcBFyf58gitTNjRtji+PrrcPZ4x45xJxKpUwUfGNHdPwGqPT7R3cvSHg8hnEwoUvymTw+F49tv4eWXYb/94k4kUuc0qq5IXfrqq1A4Zs+GUaNgr73iTiSSFyoeInXlyy+hUydYsABeeQV23z3uRCJ5o+IhUhemTAlbHBUVMGYM7Lpr3IlE8krFQ2RVffZZ2OJYuhTKy6Ft27gTieSdiofIqpg0KWxxrFgRCsfOO8edSKQgCn4lQZGS8dFH4RBcdxg3ToVD6hUVD5Ha+OCDUDgaNgxDq++wQ9yJRApKxUMkV++9F7qqmjYNhWPbbeNOJFJwKh4iuXj33TDkyJprhsKx1VZxJxKJhYqHSLbefDOMT7XOOqFwbL553IlEYqPiIZKN116DAw6A1q1D4dhss7gTicRKxUOkJuPGwUEHQZs24e82beJOJBI7FQ+R6oweDd27hy6qceNgo43iTiRSFFQ8RKoyciQcdhhsvXU4AbB167gTiRQNFQ+RTF58EQ4/HLbfHsaOhfXWizuRSFFR8RBJ99xzcOSRsMsuYZDDddeNO5FI0VHxEEn19NPQs2cYFfeVV6Bly7gTiRQlFQ+RSk8+Cb16wR57hAs5rb123IlEipaKhwjA4MFw/PGwzz7h0rFrrRV3IpGipuIh8tBD0Lt3GOhwxAho3jzuRCJFT8VD6rf77oNTT4Vu3WD4cGjWLO5EIomg4iH11513Qp8+4STA556DJk3iTiSSGCoeUj/9/e9w7rnhXI5hw6Bx47gTiSSKiofUPwMGwIUXwlFHwdChsMYacScSSRwVD6lfbrwRLr4Yjj0WhgyBRo3iTiSSSCoeUn9cey1cfnk4JPexx2D11eNOJJJYKh5S+tzhqqvg6qvh5JPhkUfCtcdFpNb0P0hKm3vY2vjrX+H00+Hee2E1/WYSWVUqHlK63MP+jYED4eyz4Y47VDhE6oiKh5Qm93BE1W23wXnnhXuzuFOJlAz9DJPSs3JlOIfjttugb18VDpE8UPGQ0rJyJZx1Ftx1F1x6aTinQ4VDpM6peEjpWLEi7BS//3648sqwk1yFQyQvtM9DSsPy5WGAw8GD4ZprwqG5IpI3Bd/yMLMdzGyMmS0ysxlmdq2ZNchiuRZmNsjM5pnZAjN7zMx0fVCBZcvgpFji4wEAABIWSURBVJNC4bj+ehUOkQIoaPEws5bAaMCBHsC1wB+Ba7JY/J9AR+AM4BRgN+DZfOSUBHn3XTjkkDDUyE03hXM6RCTvCt1tdTbQBDjK3X8AXjGztYB+ZtY/avsVM9sLOADo4O6vRm3fAG+bWVd3H12g/FIM3OHll2l7+eXw/vvQokUYXv2cc+JOJlJvFLrb6mBgZFqRGEIoKB1qWO67ysIB4O7vAF9G06Q++OmnMLTILrtA9+40nT4dbr4Zpk1T4RApsEJveWwHjE1tcPdpZrYomvZCNctNztA+KZqWH3fcEQbTq8bey5YleoC9ROVfvBh+/BF23BEefpi3NtyQDt26xZ1KpF4qdPFoCczP0D4vmlab5bbItICZ9QH6ALRu3Zpx48blFBSg5aJFtNpzz2rnWbZsGasn5cs3g0TlN2POnnsyd489wIyKiopa/bsWgyRnh2TnT3J2KKL87l6wG7AMuDBD+3TghmqWewV4NkP7YOCNmp63Xbt2ni/l5eV5W3chJDm/sscnyfmTnN29sPmBCV7F92qh93nMA1pkaG8ZTavr5UREJA8KXTwmk7aPwsw2AZqSeZ9GlctFqtoXIiIieVTo4vEScKCZrZnS1gtYDIyvYbkNzGzfygYza0/Y3/FSPoKKiEjVCl087gaWAsPMrGu0U7sfMNBTDt81sylm9kDlY3d/ExgFPGJmR5nZEcBjwOuuczxERAquoMXD3ecBXYAGhMNyrwFuAa5Om7VhNE+qXoStkweBR4CJwJH5zCsiIpkVfGBEd/8E6FzDPGUZ2uYDp0Y3ERGJkYZkFxGRnKl4iIhIziycB1LazOx74Ks8rb4VMDtP6y6EJOdX9vgkOX+Ss0Nh82/m7utlmlAvikc+mdkEd28fd47aSnJ+ZY9PkvMnOTsUT351W4mISM5UPEREJGcqHqvu3rgDrKIk51f2+CQ5f5KzQ5Hk1z4PERHJmbY8REQkZyoeIiKSMxUPERHJmYqHiIjkrOADI4rUN2bWGTiYcPGyllHzPMKFzEa4e3lc2XJlZjsD7QAHJrr7RzFHkpjoaKt6opS+wCAZX2Jmtg7wDLAf8CUwiZ8vm9yS8G+xBfAqcJS7z40jZyZm9jhwpbt/ET1uDDwBHA5YNJsDTwMnuPuyWILWoJQ+98X2mVfxqCUzM+AwYFfCP+YEwoexqN7QJH+BQbK/xMxsMLAbcKK7v1vFPO2BwcC77n5SIfNVx8xWAnu6+zvR4wHAOcBFwFOE9/wYYCDwN3e/Jq6smST5c5+Yz7y761bDDXgD2D7lcUvgXWAl8EN0WxnNt2bcedOyDwY+BXarZp72hF9ij8adN0O2lcDuKY8HAIuAswkDxK0b/b0IuDruvGnZ5wM9spjvCGB+3HlreN9nAFdlmO9a4LO482bIldjPfVI+87G/UUm4ZfjHfACYCxyU0nYQ4ZfNLXHnTcue2C+wKt77xHyJRZ+RI7KY70hgbtx5a3jflwP7Z5ivC7Ak7rwZciX2c5+Uz7yOtqqdw4Fr3f3lyobo7+uBo2JLldlKft7UrY5F8xa79YFxGdrHA5sWNkqNngMGmNk+Vc1gZnsDNxG6WIrN3mbW3cy6A3OAtTLMsxawuLCxslJKn/ui/MzraKvaWZuwjyPdRGCDAmepSeUX2Pfu/q9MMxT5FxiEL7FW0d9J+hL7AzAUeM3MZhK6SOZH01oQ+t03AF4B+saSsHoD0x4fAAxPa9sH+G9h4uQk6Z/7ov/Mq3hk7+ho5yaE7qlMF0hpRdj/UUyS/gUGCf0Sc/cfgAPNbC9Ct2bqET+zgfuBl9z9rZgiVmfzDG1LM7T9SOiTLzZJ/9wX/WdeR1tlITryJN1D7n5a2nz3ADu4+36FSZa9Kr7AKg9ZLNYvMMxsswzNS919Ztp8VwOT3f3JwiSTJEji5z4pn3kVjzpkZmcCn7v72LiziIjkk4qHSMzM7D5gNXc/Pe4suUpydlk12uchQPK/BBKevxPJHWcuydkT/bmJO7u2POqQmY0mvKdd4s6SKzObQvggbhF3ltpIen6JR5I/N3FnT+wvhiJlJPQ9dfetkvgfqFLS8ptZYzO718y2jjtLrpKcPV3SPjep4s6uLY96zMw2JxyS+aW7fxl3nlwVe34za1rN5LWBrwmD9r0O4O6LCpErG0nOXhMzKwPc3b+KOUrOiil7In8lFyszW93Miuos5yjTbWY218wqzKx/1H4HMAUYDUwxs8fMrEGsYTNIeP4fq7l9TdhSfSmlrZgkOTtm1iflJLvKtj+Y2ffA58AXZvadmf0+noRVS0p27TDPkpmdSxhRdCPgM+Bmd380bbZdCYMjFtOX2KXAGYSTjuYC55vZeoQxfU4B3gP2BW4GzgLujCdmlZKcfzHhpNGbCWcJp2oG3A70J5xzUGySnB3gLuB9wsmYmFkf4Bbgn/xyVOB/mNl8d388rqAZJCN73IOAJeEG/I4w/s1jwMXAMGBF9A/ZOGW+PYAVcedNyz4ZuCTl8b7Ra7kwbb5rgAlx5y2l/IQfGo8TvgTOBxqkTGsRvY5fDTZYDLckZ48ypg8uOBkYlGG+RwnD4ceeOWnZ1W2VnYsJWxonuPvN7n4UYbiAfYFyM1s33njV2gx4J+XxxOj+nbT5Xidc36DYJDa/u89w9+MJg2WeDvzHzA6MOVZWkpy9ClsCQzK0DwF2KHCWXBVldhWP7GwLjEhtcPcxwJ6EnYdvmllRfXGlWEjIWGlpdEvfwdmA4uzGTHp+3P1VQpfmHcDjZvYC4TNV9JKcHWhsZk2jnf9zCL0F6VYQuoGKTdFnV/HIzgLCoIe/4O5Tgb0Jm/ZvEq4aV2w+JVy6EgB3X+nuTdz9/bT5dgSmFjJYlpKeH/hf7juAbYBvgNcozi+tX0lw9nJ+3qG/PrB7hnl2IRwAUGyKPntR/lIrQhMJO2ifSp/g7vPMrEs07TaK7z/VQMKVx2rSleIcmjrp+X/B3ecAZ5vZbcDWQNFde70qCct+aoa2bzO07U64nGsxSUR2neeRBTM7hjBs86FexbWOo8NE7wK6uXum4axFREqGioeIiORM+zxERCRnKh4iIpIzFQ8REcmZioeI5J2Z3WVm35hZ7DtZzWwTMxtjZpPM7GMz629mFneupFHxEJFCeIJwsmExWA5c5u7bA78lDCt0VLyRkkfFox4ws1PMbKKZ/Whm88zs32Y2MO5c2TCzq6JfrCvN7KFq5ivYazSzY83slCzn7WdmnnKbYWZPm9mWWSz7kJlNWOXAdcCC983s5LT21czsvOj9XmxmP0S/5m9L/TXv7q+6+3cFylptJnf/1t0nRLl+Aj4ENklZ/nYze6AQWZNMh+qWODP7P+AvhBFQy4HGhDO2T3T3reLMVhMzaw+8C1wOjANmufvnGeYr6Gs0s6eAVu7eMYt5+wEXAgdFTVtEWRsAO7r7wmqW3RJo4u6xn4xnZr2Am4At3X1ZSvtQoBswAHgLaE4YdaGTu7fPsB5397x2EeWSKRqX7n3gAHefFLWVEQYj3Mndp+Qza6LFPYKkbvm9EYaTuCNDu8WdLYvsJxLO2F+rmF4jYTSBcVnO2w+Ynda2b/S6jqlimQZAo7jf/7RM/wKuT2s7OHodB2f73oevnJyet2Muy+SSCViD8GPjjxnmHQ0MiPt9L+abuq1K39rAzPRGj/6HAJjZuOjXNCltHaNulp1S2h4yswlmdoiZfWJmi8zsRTNbx8y2MrNyM1sYzbNLTcGi7p//mNlSM/vazK43s4aVz0UYchpgQZSlY21fY1r+I8xsspktMbPXzWyHtPlqynU00CGlK6pfTa81TeXIwGUZcn0MLAH2yNRtZWb7R+9zhZktiP7tfps2z35mNj7695ljZveZ2Zop03c0s5ctXGBroYUdx+dWFdbMtiL8ck8fnqdDdD82fZn0976AsspkYUSIx4B/u/uADOt5GjjBzPQdWQW9MaXvPcIFlE62uhk6flPgWuBKoA/hS+VewvDQQ4CehDHThqT2eaczswOAJ6N8PYB/EIa+vz2a5S/AddHfnYG9onkzyeU1bkYYL+svwPGEa1OMNLPGOeQqB/4dZdoLuL+G50xXFt3PTGvrD9xI+PX8q8vqRsVzDLAMOBnoRRikcOOUefYh/GqeSfi3uBDoDgxKWdULhBFZTwQOj17jmlStC2F04w/S2iu73G4ys82qWb6Qss10D2HQwT9WMf0NoDWwcx1mKy1xb/rolt8bYeTNLwib8iuBjwlf/mulzDMOeCptuY7RMjultD1EOFJly5S2/tF8vVPaukdt21eT6y2gPK3tUsKXWpvo8SnRepqv6mtMye/A3iltm0Wv6ewccuXcbUUoqA0JI9OWE67St2Fart9kyDsh5fGbwASq6Y4jFJP0/J0r/y0Jo0M7sHMOn6F7yXDRIWADws5mj24fEfZP/erfi1Bgp0fzTQfur+K5LOW9akgoXJ7W1rCarDVmAvaJpv2HsL/jfeCCtPU0jD4XZ8bx/zYJN215lDh3/xDYnvAL807Cf84/AxPMrHktVjnVf7nTunKH4tgMbRuTQdRlsCswNG3Sk4St4b1yCZTja5zl7m+kLPsVoRtp97rOlWJdwtbCMsIQ81sAvdw9daTUb/zXw8z/j5k1IxxS+rBH324Z5mkaZfynmTWsvBEulLWMcBDBXMIw3nebWS8zWz+L/BsQXRI1lbvPJBzqeiBhUNC1geuBN8ysUdq8Z7h7G3e36P6MKp7rZH5+r5YRtqJIa1uWedHsMrn7v6IcO7v7b6LbbWnrWQ7Mj167ZKDiUQ+4+1J3f8Hdz3P3HQjXBN+acIW4XM1Pe/xThvbKtsZVrKMVsDqQfuhm5eN1cg2Vw2uclWHxWcCG+cgVWUC41kt7oA1Q5u4vVfEcVWlJKIqZhuZOnacBoYCmftEuJbyuTdx9JeEqmDOBB4GZZvZa+n6TNI2jdfyKu69w91Hu/ntCl+YgQldPbQvtC4T3qvJ2dtS+W9qtSnWYaSlVf4brPV3Pox5y9wfMrD+wXdS0BGiUNlvLPEaYTfhSS//V2zq6zzjsfS4yvMZKmX5pr0/o6spXruUenVdQjZp2MM8jdMltWM0886P19CPtypeRGQDuPhk42sxWB/YD/ga8aGZtouKSbi5Z/AJ395VmNopwPYpafel6uGbInMrHlVuOWbx/+ci0NnXwWSxV2vIocZm6JcxsPcKO4spfu9P59ZfsAfnK5O4rCF1Fx6RNOpbwBflmLuvL8jVWWt/M9k6Zb1NCV9U7OeT6iQL/IvVwPsjbQO+qDkSI5nkL2NbdJ2S4zUibf5m7jyUcQLAhv7zcb6pPgV9co8bMWlcx7+GESwS/Hc13soWTC9+Pjl6bHP09MSpedSabTNnmiT4/TYHP6jJjKdGWR+n7j5k9B4widM9sRjh6aBHwcDTPM8DpZnYL8CLQiZ9PasuXqwlHOQ0iHKW1M+FIpvvcfXqO68rmNVaaDQw2syuBxcA10TIP5ZBrMtDDzI4gFN4Z6V/MefInwj6Al8zsXsKRRXsRdqoPj+a5FBhjZisJO/Z/JHTdHAJcQSh6NxP243xB2MK8DPjAq7jQGeEcj6vMbD13/z5q+6eZ/Qj8k3D53/WBEwhHqJ3p7vMB3P1h4OHokNcfgX2irYt8yCZTtnnaE7bi3sgwTUBHW5X6DTiX8KU6g9A9NRV4HNgubb7/I+xI/REYTPi1luloqwlpy51C2hFRhMNOnXDlxeqy9SIc8fIT4Uv4elKOpMm07lV8jQ8RjlY6ivCLcinhi3GnHHO1IhTcuVG+ftVk60faSYIZ5vnV+1rN+90BeJVQGOcTjtxKP0prD+BlwhFdC4FPCFsXLQhfqI8SCscSwr6PJ4BNq8nXiNCVdFJK22nRc0yP3qe5hB8eHatYx7bA9Fp8fjuS5UmCuWSqKQ/wd9KOWtPtlzcNTyL1RnSC306eYdgMqZ6Z/R3Yyt0PqeXyxwIn13b5ulZdnuiou6+AP7n74IKHSwjt8xCRbNwEdDKzbWq5fFvC+RfForo8xxC6NIcULk7yqHiISI087O85jeqP9qrOLvz6DPU4VZfHgNM9nOshVVC3lYjknZlNAw70aOTauBVbniRS8RCRvDKzloSDGZp7OBxaeUqAioeIiORM+zxERCRnKh4iIpIzFQ8REcmZioeIiORMxUNERHKm4iEiIjlT8RARkZypeIiISM7+HzRZ4ZaYOFK9AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot exact payoff function (evaluated on the grid of the uncertainty model)\n",
    "x = np.linspace(sum(low), sum(high))\n",
    "y = np.maximum(0, x - strike_price)\n",
    "plt.plot(x, y, 'r-')\n",
    "plt.grid()\n",
    "plt.title('Payoff Function', size=15)\n",
    "plt.xlabel('Sum of Spot Prices ($S_T^1 + S_T^2)$', size=15)\n",
    "plt.ylabel('Payoff', size=15)\n",
    "plt.xticks(size=15, rotation=90)\n",
    "plt.yticks(size=15)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:39:55.878255Z",
     "start_time": "2020-07-13T20:39:55.872521Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "exact expected value:\t0.4870\n"
     ]
    }
   ],
   "source": [
    "# evaluate exact expected value\n",
    "sum_values = np.sum(u.values, axis=1)\n",
    "exact_value = np.dot(u.probabilities[sum_values>= strike_price], sum_values[sum_values>= strike_price]-strike_price)\n",
    "print('exact expected value:\\t%.4f' % exact_value)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Evaluate Expected Payoff\n",
    "\n",
    "We first verify the quantum circuit by simulating it and analyzing the resulting probability to measure the $|1\\rangle$ state in the objective qubit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:39:56.199909Z",
     "start_time": "2020-07-13T20:39:56.086824Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "state qubits:  5\n",
      "circuit width: 11\n",
      "circuit depth: 529\n"
     ]
    }
   ],
   "source": [
    "num_state_qubits = basket_option.num_qubits - basket_option.num_ancillas\n",
    "print('state qubits: ', num_state_qubits)\n",
    "transpiled = transpile(basket_option, basis_gates=['u', 'cx'])\n",
    "print('circuit width:', transpiled.width())\n",
    "print('circuit depth:', transpiled.depth())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:40:02.308744Z",
     "start_time": "2020-07-13T20:40:02.144294Z"
    }
   },
   "outputs": [],
   "source": [
    "job = execute(basket_option, backend=Aer.get_backend('statevector_simulator'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:40:02.503868Z",
     "start_time": "2020-07-13T20:40:02.471459Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exact Operator Value:  0.3954\n",
      "Mapped Operator value: 0.4969\n",
      "Exact Expected Payoff: 0.4870\n"
     ]
    }
   ],
   "source": [
    "# evaluate resulting statevector\n",
    "value = 0\n",
    "for i, a in enumerate(job.result().get_statevector()):\n",
    "    b = ('{0:0%sb}' % num_state_qubits).format(i)[-num_state_qubits:]\n",
    "    prob = np.abs(a)**2\n",
    "    if prob > 1e-4 and b[0] == '1':\n",
    "        value += prob\n",
    "\n",
    "# map value to original range\n",
    "mapped_value = basket_objective.post_processing(value) / (2**num_uncertainty_qubits - 1) * (high_ - low_)\n",
    "print('Exact Operator Value:  %.4f' % value)\n",
    "print('Mapped Operator value: %.4f' % mapped_value)\n",
    "print('Exact Expected Payoff: %.4f' % exact_value) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next we use amplitude estimation to estimate the expected payoff."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:40:03.034186Z",
     "start_time": "2020-07-13T20:40:03.030226Z"
    }
   },
   "outputs": [],
   "source": [
    "# set target precision and confidence level\n",
    "epsilon = 0.01\n",
    "alpha = 0.05\n",
    "\n",
    "# construct amplitude estimation \n",
    "ae = IterativeAmplitudeEstimation(epsilon=epsilon, alpha=alpha, state_preparation=basket_option,\n",
    "                                  objective_qubits=[objective_index],\n",
    "                                  post_processing=basket_objective.post_processing)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:40:49.786497Z",
     "start_time": "2020-07-13T20:40:11.062354Z"
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "result = ae.run(quantum_instance=Aer.get_backend('qasm_simulator'), shots=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:40:49.793418Z",
     "start_time": "2020-07-13T20:40:49.788189Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exact value:        \t0.4870\n",
      "Estimated value:    \t0.4726\n",
      "Confidence interval:\t[0.4238, 0.5213]\n"
     ]
    }
   ],
   "source": [
    "conf_int = np.array(result['confidence_interval']) / (2**num_uncertainty_qubits - 1) * (high_ - low_)\n",
    "print('Exact value:        \\t%.4f' % exact_value)\n",
    "print('Estimated value:    \\t%.4f' % (result['estimation'] / (2**num_uncertainty_qubits - 1) * (high_ - low_)))\n",
    "print('Confidence interval:\\t[%.4f, %.4f]' % tuple(conf_int))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:40:50.292936Z",
     "start_time": "2020-07-13T20:40:50.150321Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<h3>Version Information</h3><table><tr><th>Qiskit Software</th><th>Version</th></tr><tr><td>Qiskit</td><td>None</td></tr><tr><td>Terra</td><td>0.16.0.dev0+28d8c6a</td></tr><tr><td>Aer</td><td>0.6.1</td></tr><tr><td>Ignis</td><td>0.5.0.dev0+470d8cc</td></tr><tr><td>Aqua</td><td>0.8.0.dev0+ce81016</td></tr><tr><td>IBM Q Provider</td><td>0.8.0</td></tr><tr><th>System information</th></tr><tr><td>Python</td><td>3.7.7 (default, May  6 2020, 04:59:01) \n",
       "[Clang 4.0.1 (tags/RELEASE_401/final)]</td></tr><tr><td>OS</td><td>Darwin</td></tr><tr><td>CPUs</td><td>2</td></tr><tr><td>Memory (Gb)</td><td>16.0</td></tr><tr><td colspan='2'>Fri Oct 16 11:48:53 2020 CEST</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of Qiskit</h3><p>&copy; Copyright IBM 2017, 2020.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import qiskit.tools.jupyter\n",
    "%qiskit_version_table\n",
    "%qiskit_copyright"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
